//object是js的一种类型
let a: object;
a = {}
a = []
a = function () { };
/*  1.对象
    对象语法
    {属性名:属性值,属性名？:属性值 .....}
    属性名后添加问号  相当于给当前属性设置可选开关
*/
let b: { a: number, b?: number }
b = { a: 2, b: 1 }
//    b={a:1}   没加问号默认会报错
b = { a: 1 }

//可以添加任意属性 写法固定   [propName:string]:any

let c: { a: number, [propName: string]: any }
c = { a: 1, b: 2, c: 3, d: true }
c.a = 1

/* 2.函数
   函数语法：
   (形参:类型,形参:类型....) => 类型
*/

let d: (a: number, b: number) => number;
d = function fn1(a: number): number {
    return a;
};


/*3.数组
    数组的语法：
    类型[];
    Array[类型]
*/
let e = []
//字符串类型数组
let f: string[]
f = ['1', '2', '3']
let g: Array<boolean>
g = [true]

/*
    4.元组:固定长度的数组
*/

let i: [number, string, boolean]
i = [1, '1', true]

/*
    5.枚举
    enum 对象名称{
        定义的枚举值
    }
*/

enum Sex {
    man = 1,
    woman = 0
}
let h: {
    name: string,
    age: number,
    sex: Sex
}
h = { name: '丽丽', age: 12, sex: Sex.man }
console.log(h.sex === Sex.man ? '男性' : '女性')
//类型别名 type
type myName = 1 | 2 | 3 | 4
let l: myName;
let m: myName;
let n: myName;


// 逻辑运算符 &
let o: { name: string } & { age: number }
o = { name: '莉莉', age: 12 }

export { }









